Skip to content

docs(user): generate the stable manual PDF redirect. Principle VIII. - #6582

Open
ten9876 wants to merge 4 commits into
mainfrom
docs/pdf-from-release
Open

ten9876 wants to merge 4 commits into
mainfrom
docs/pdf-from-release

Conversation

@ten9876

@ten9876 ten9876 commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Generate the PDF manual redirect as part of the Docusaurus site build. The plugin writes /AetherSDR-Manual.pdf as a 302 to the GitHub release asset identified by stable-version.json, keeping the app and site's existing manual links.

Publishing follows #6558's release-only workflow: ordinary merges do not deploy the site, pull requests still validate the site and render the PDF, and releases deploy after PDF signing. The deployment workflow verifies its selected release asset and replaces the plugin's default PDF route, preserving unrelated redirects and exactly one manual rule. This also supports deploying older tags that predate the plugin.

Update the documentation to explain the generated default and the verified deployment override. No application code, release signing, or package-build workflow is changed by this PR after #6558.

Validation

  • Actual Docusaurus postBuild hook exercised with only the unrelated Prism theme import stubbed: stable-version URL, repeat invocation, and verified deployment override all passed; exactly one manual rule remained.
  • JavaScript syntax check and git diff --check: passed.
  • Combined workflow checks: eleven job-condition scenarios, three redirect fixtures, and both sides of the 25 MiB size boundary passed.
  • Hosted Docs and platform CI must pass on the final head before merge. No local docs/PDF rebuild or app build.
  • Production publishing is not exercised by pull-request CI. Release deployment requires the cloudflare-pages environment to allow v* tags.

Principle VIII: keep the manual URL consistent with the site release and validate deployment inputs.

Original implementation by Jeremy KK7GWY.

Generated with OpenAI Codex (GPT-6 Astra)

@ten9876
ten9876 requested review from a team as code owners October 18, 2026 23:43
@jensenpat jensenpat self-assigned this Oct 20, 2026
NF0T and others added 2 commits October 20, 2026 10:41
…le VIII.

Every push to main that touched docs/user/** rebuilt and redeployed
docs.aethersdr.com. Since 2026-10-17 every one of those deploys has
failed: the PDF manual (25.3 MiB) is over Cloudflare Pages' 25 MiB
per-file limit.

- Drop the push-to-main trigger. Pull requests still run the link
  check, the generated-reference check and the PDF render check.
- Deploy the site when an app release (v*, not a pre-release) is
  published, from its tag, after release-pdf has attached the signed
  PDF.
- Stop uploading the PDF to Pages. A _redirects entry sends
  /AetherSDR-Manual.pdf (the URL the app and the site link to) to the
  signed PDF on the release.
- workflow_dispatch deploys the latest app release, or the tag or
  branch given as `ref`.
- release-pdf only runs for v* tags. It had been attaching the manual
  to flex-tailnet-shim and test pre-releases.

Fixes #6556.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…. Principle XII.

Addresses the review on #6558, and restores what the rebase onto #6571
dropped from the deploy job.

- resolve-target (read-only token, no checkout) accepts only an empty
  ref, main, or a published non-pre-release v* release tag, and pins it
  to a commit SHA. Any other branch or tag is refused.
- build-site builds that SHA with a read-only token, no secrets and
  npm ci --ignore-scripts, writes the PDF redirect, checks the 25 MiB
  limit and uploads the site.
- deploy runs in the cloudflare-pages environment with no permissions
  and no checkout, and passes the token only to the pinned
  wrangler-action, with wrangler pinned to 4.147.0 again. A missing
  token or account ID fails the job instead of skipping it.
- A release deploys after sign-release-pdf, the job that now attaches
  the PDF, not after release-pdf.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jensenpat

Copy link
Copy Markdown
Collaborator

Reconciliation with #6558 is paused pending the operator decision on publishing cadence: release-only versus continuing main-push deployments. This branch has rebased cleanly onto upstream main in an isolated worktree, and the local signed documentation correction describes site-only deployment. No branch has been pushed and no approval or merge has been posted. Releasing the claim while the decision is pending.

@jensenpat jensenpat assigned jensenpat and unassigned jensenpat Oct 20, 2026
@jensenpat jensenpat changed the title docs(user): serve the PDF manual from the stable release, not Pages. Principle VIII. docs(user): generate the stable manual PDF redirect. Principle VIII. Oct 20, 2026
@jensenpat
jensenpat force-pushed the docs/pdf-from-release branch from 1b93d51 to fce8a31 Compare October 20, 2026 17:52
jensenpat and others added 2 commits October 20, 2026 10:56
Avoid SIGPIPE false negatives in the release asset check. Explicit status conditions allow the manual deploy chain to run after release signing is skipped, while rejecting failed dependencies and cancellation. Replace any existing manual redirect instead of appending duplicates, preserving unrelated rules for builds with the Docusaurus redirect plugin.
…Principle VIII.

The manual is now 25.5 MiB, over the 25 MiB a Cloudflare Pages file may
be, so every main deploy since 2026-10-16 has failed on it and the site
has not updated.

The Docs build still renders the PDF, as a check, but outside the site's
build/, so the deploy no longer carries it. A _redirects file written
after the Docusaurus build sends /AetherSDR-Manual.pdf (302) to the copy
attached to the release stable-version.json names, so the site's links
and the app's Help menu link keep working. That copy is the stable
manual; the site used to serve one typeset from main.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012U8wmr3AQGVrmQLp2zNBwa
@jensenpat
jensenpat force-pushed the docs/pdf-from-release branch from fce8a31 to 5a5f45d Compare October 20, 2026 17:56

@jensenpat jensenpat left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Landing checkpoint for 5a5f45de8772aad47549c006662d23b41a013498: reconciled and rebased for release-only site publishing, with signed commits pushed. No approval or auto-merge is armed.

Windows, macOS, hosted Docs (site/link checks and PDF render), Static Checks, and sanitizer configuration passed on this head. Linux build remains in progress; it is not reported as passed. No local app/site/PDF rebuild or production deployment was performed.

Manual workflow review and executed validation for the two-PR reconciliation covered 11 live read-only resolver cases, 11 job-condition scenarios (including render/sign/resolve/build failure and missing docs), idempotent redirect replacement, the actual Docusaurus hook on #6582 plus the shared deployment override, and both sides of the Pages size limit. Allowing skipped signing for a release was mutation-checked and correctly failed the render-failure scenario. Upstream PDF render/sign jobs are unchanged. The automated code-review harness was unavailable; review was performed manually.

The previous credential/ref-selection findings are addressed: repository builds have no deployment secrets, the deploy job checks out nothing, and accepted refs are restricted and pinned to a commit SHA. Manual deployments survive skipped release jobs; release deployments require successful signing. The PDF route is normalized to exactly one verified release URL while unrelated redirects are preserved.

External prerequisite still missing: cloudflare-pages allows only the main branch. An administrator must add a deployment tag rule named v* before the release-triggered deploy can run. The authenticated maintain account received HTTP 403, “Must have admin rights to Repository,” when attempting that setting update. I am holding approval and merge rather than landing a known failing release-deployment path.

Releasing the claim while the administrator change is pending. Hosted Linux CI continues independently. Recheck this head, all CI, review state, and the environment policy before resuming; land #6558 before #6582.

@jensenpat jensenpat removed their assignment Oct 20, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants